package cn.zhoujing.security.demo.common.consts;

/**
 * Redis 常量类
 *
 * @author zhoujing
 * @createTime 2024/2/8 - 21:12
 */
public interface RedisConst {

    /**
     * 用户登录状态的信息
     * type：String
     * key：user:login:info:[用户id最后一位数]:[用户id]
     * value：用户的Token信息
     * expired：3小时
     */
    String USER_LOGIN_INFO_KEY = "user:login:info:%s:%s";

    /**
     * USER_LOGIN_INFO_KEY 构建
     *
     * @param userId 用户id
     * @return key
     */
    static String userLoginInfoKeyBuild(String userId) {
        String logInfoKey = String.format(USER_LOGIN_INFO_KEY, userId.substring(userId.length() - 1), userId);
        return logInfoKey;
    }

    /**
     * 用户详情信息
     * type：String
     * key：user:detail:info:[用户id最后一位数]:[用户id]
     * value：用户的详情信息
     * expired：3小时
     */
    String USER_DETAIL_INFO_KEY = "user:detail:info:%s:%s";

    /**
     * USER_DETAIL_INFO_KEY 构建
     *
     * @param userId 用户id
     * @return key
     */
    static String userDetailInfoKeyBuild(String userId) {
        String detailInfoKey = String.format(RedisConst.USER_DETAIL_INFO_KEY, userId.substring(userId.length() - 1), userId);
        return detailInfoKey;
    }

    /**
     * 鉴权的URI
     * type：HASH
     * key = 权限uri
     * value = 用户角色
     */
    String PERMISSION_URIS = "permission:uris";

}
